package org.posupe.candidatos;

import org.posupe.util.RepositorioException;

public class CadastroCandidatos {
	private RepositorioCandidatos candidatos;

	public CadastroCandidatos(RepositorioCandidatos repositorio) {
		this.candidatos = repositorio;
	}

	public void cadastrar(Candidato candidato)
			throws CandidatoJaCadastradoException, RepositorioException {
		if (!candidatos.existe(candidato.getCodigo())) {
			candidatos.inserir(candidato);
		} else {
			throw new CandidatoJaCadastradoException(candidato);
		}
	}

	public void atualizar(Candidato candidato) throws RepositorioException,
			CandidatoInexistenteException {
		candidatos.atualizar(candidato);
	}

	public void remover(String cpf) throws RepositorioException,
			CandidatoInexistenteException {
		candidatos.remover(cpf);
	}

	public Candidato procurar(String cpf) throws RepositorioException,
			CandidatoInexistenteException {
		return candidatos.procurar(cpf);
	}

	public IteratorCandidatos procurar(Candidato candidato)
			throws RepositorioException {
		return candidatos.procurar(candidato);
	}

	public boolean existe(String cpf) throws RepositorioException {
		return candidatos.existe(cpf);
	}

	public IteratorCandidatos getCandidatos() throws RepositorioException {
		return candidatos.getIterator();
	}

}
